package com.copa.l169;

import java.util.HashMap;

/**
 * @author copa
 * @createDate 2022-05-20 10:43
 * @function hashMap
 */
public class Test2 {

    public int majorityElement(int[] nums) {
        // 定义Hashmap对每一个元素进行计数
        HashMap<Integer, Integer> countMap = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (!countMap.containsKey(nums[i])) {
                // 如果没遍历过该元素则创建对应的key，并value+1
                countMap.put(nums[i], 1);
            } else {
                // 遍历过该元素 value+1
                countMap.put(nums[i], countMap.get(nums[i]) + 1);
            }
            if (countMap.get(nums[i]) >= nums.length / 2 + 1) {
                // 这里是如果该元素已经超过半数，则直接返回，无需遍历
                return nums[i];
            }
        }
        // 写这个是为了防止nums只有一个元素的情况
        return nums[0];
    }

    public static void main(String[] args) {
        int[] nums = new int[]{2,2,1,1,1,2,2};
        System.out.println(new Test2().majorityElement(nums));
    }
}
